package 其他.数字矩阵中服务器的个数;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Main {
    public static int[][] ints;
    public static int n;  // n 行 ---y
    public static int m;  // m 列 ---x

    public static int count;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        String[] split = s.split(" ");
        n=Integer.valueOf(split[0]);
        m=Integer.valueOf(split[1]);

        ints=new int[n][m];

        // 形成这个二维矩阵
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                ints[i][j]=scanner.nextInt();
            }
        }
        ArrayList<Integer> list = new ArrayList<>();
        // 开始遍历这个二维数组,查看后的连续的范围都将其置位0
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                 count=0;
                 // 当前结点如果为1, 再检查周围的结点
                 if (ints[i][j]==1){
                     count++;
                     ints[i][j]=0; //  在对该结点访问之后需要对其结点 置位 0 ,  记得这个思想
                     check(i,j);
                 }

                list.add(count);
            }
        }

        Collections.sort(list);// 升序排序

        System.out.println(list.get(list.size()-1));

    }

    // i 是 x, j  是 y
    private static void check(int i, int j) {
        if (i+1<m && ints[i+1][j]==1){
            count++;
            ints[i+1][j]=0;
            check(i+1,j);
        }
        if (j+1<n&&ints[i][j+1]==1){
            count++;
            ints[i][j+1]=0;
            check(i,j+1);
        }
        if (i-1>=0&&ints[i-1][j]==1){
            count++;
            ints[i-1][j]=0;
            check(i-1,j);
        }
        if (j-1>=0&&ints[i][j-1]==1){
            count++;
            ints[i][j-1]=0;
            check(i,j-1);
        }
    }
}
